"""
配置模板模块

提供各种配置模板，用于生成配置文件。
"""

from typing import Dict, Any


class ConfigTemplates:
    """配置模板类
    
    包含各种配置模板，用于生成配置文件。
    """
    
    @staticmethod
    def get_main_config_template() -> str:
        """获取主配置TOML模板
        
        返回:
            str: 主配置TOML模板字符串
                示例值: 
                '''
                [logging]
                level = "INFO"
                file = "/var/log/database_backup/database_backup.log"
                max_file_size = "10MB"
                backup_count = 5
                
                [backup]
                retention_days = 30
                loop_interval = 3600
                
                [paths]
                config_dir = "/etc/database-backup/configs"
                '''
        """
        return """# 主配置文件
# 全局配置，不包含数据库和Git信息

[logging]
# 日志级别: DEBUG, INFO, WARNING, ERROR, CRITICAL
level = "INFO"
# 日志文件路径（绝对路径）
file = "/var/log/database_backup/database_backup.log"
# 单个日志文件最大大小
max_file_size = "10MB"
# 保留的日志文件数量
backup_count = 5

[backup]
# 备份文件保留天数
retention_days = 30
# 循环执行间隔时间（秒）
loop_interval = 3600

[paths]
# 备份配置文件存放目录（绝对路径）
config_dir = "/etc/database-backup/configs"
"""
    
    @staticmethod
    def get_backup_config_template() -> str:
        """
        获取备份配置模板
        
        Returns:
            str: 备份配置模板字符串
        """
        template = """# 数据库备份配置文件
# 数据库连接配置
[database]
# 数据库类型 (mysql, postgresql, mariadb)
type = "mysql"

# 数据库连接信息
host = "localhost"
port = 3306
username = "your_username"
password = "your_password"
database = "your_database"

# 路径配置
[paths]
# Git仓库根目录（绝对路径）
git_root_dir = "/var/git/database-backup"
# 备份目录（相对于git_root_dir的相对路径）
backup_dir = "backups"

# 高级配置
[advanced]
# 是否压缩备份文件
compress = true

# 是否加密备份文件
encrypt = false
# 加密密码（仅在encrypt=true时需要）
encrypt_password = ""
"""
        return template
    
    @staticmethod
    def get_main_config_dict() -> Dict[str, Any]:
        """获取主配置字典
        
        返回:
            Dict[str, Any]: 主配置字典
                示例值: 
                {
                    "logging": {
                        "level": "INFO",
                        "file": "/var/log/database_backup/database_backup.log",
                        "max_file_size": "10MB",
                        "backup_count": 5
                    },
                    "backup": {
                        "retention_days": 30,
                        "loop_interval": 3600
                    },
                    "paths": {
                        "config_dir": "/etc/database-backup/configs"
                    }
                }
        """
        return {
            # 日志配置
            "logging": {
                # 日志级别
                "level": "INFO",
                
                # 日志文件路径（绝对路径）
                "file": "/var/log/database_backup/database_backup.log",
                
                # 单个日志文件最大大小
                "max_file_size": "10MB",
                
                # 保留的日志文件数量
                "backup_count": 5
            },
            
            # 备份配置
            "backup": {
                # 备份文件保留天数
                "retention_days": 30,
                
                # 循环执行间隔时间（秒）
                "loop_interval": 3600
            },
            
            # 路径配置
            "paths": {
                # 备份配置文件存放目录（绝对路径）
                "config_dir": "/etc/database-backup/configs"
            }
        }
    
    @staticmethod
    def get_backup_config_dict() -> Dict[str, Any]:
        """获取备份配置字典
        
        Returns:
            Dict[str, Any]: 备份配置字典
        """
        return {
            # 数据库类型配置
            # 可选值: "mysql", "postgresql", "mariadb"
            # 示例值: "mysql"
            "type": "mysql",
            
            # 数据库连接配置
            "database": {
                # 数据库主机地址
                # 示例值: "localhost"
                "host": "localhost",
                
                # 数据库端口
                # 示例值: 3306
                "port": 3306,
                
                # 数据库用户名
                # 示例值: "root"
                "username": "root",
                
                # 数据库密码
                # 示例值: "password123"
                "password": "password123",
                
                # 数据库名称
                # 示例值: "my_database"
                "database": "my_database"
            },
            
            # 路径配置
            "paths": {
                # Git仓库根目录（绝对路径）
                # 示例值: "/var/git/database-backup"
                "git_root_dir": "/var/git/database-backup",
                
                # 备份目录（相对于git_root_dir的相对路径）
                # 示例值: "backups"
                "backup_dir": "backups"
            },
            
            # 高级配置
            "advanced": {
                # 压缩备份文件
                "compress": True,
                
                # 加密备份文件
                "encrypt": False,
                "encrypt_password": ""
            }
        }
    
    # 保留原有方法以保持向后兼容性
    @staticmethod
    def get_toml_template() -> str:
        """获取TOML配置模板（向后兼容）
        
        返回:
            str: TOML格式的配置模板字符串
        """
        return ConfigTemplates.get_backup_config_template()
    
    @staticmethod
    def get_default_config_dict() -> Dict[str, Any]:
        """获取默认配置字典（向后兼容）
        
        返回:
            Dict[str, Any]: 默认配置字典
        """
        return ConfigTemplates.get_backup_config_dict()